入門WebAssembly 目次
目 次
著者紹介                                                                        iv
テクニカルレビューア紹介                                                      iv
本書に寄せて                                                                    viii
謝辞                                                                            ix
はじめに                                                                        x
本書のサンプルコード                                                          xiii
第1 章WebAssembly とは1
1.1 WebAssembly とは何か                                                  1
1.2 WebAssembly を使う理由                                                3
1.3 WebAssembly とJavaScript の関係                                      6
1.4 WAT を学ぶのはなぜか                                                    6
1.5 組み込み環境                                                              12
1.6 今がチャンス                                                              19
第2 章WAT の基礎21
2.1 これ以上ないほど単純なモジュール                                      21
2.2 WebAssembly でのhello world!                                         22
2.3 WAT の変数                                                              27
2.4 条件付きロジック                                                        37
2.5 ループとブロック                                                        40
2.6 まとめ                                                                    46
第3 章関数とテーブル47
3.1 WAT から関数を呼び出す状況                                            47
3.2 is_prime 関数を作成する                                                  48
3.3 インポートする関数を宣言する                                              56
3.4 外部関数の呼び出しがパフォーマンスに与える影響                      58
3.5 関数テーブル                                                              62
3.6 まとめ                                                                    71
vi 目 次 
第4 章低レベルのビット操作73
4.1 2 進数、10 進数、16 進数                                                73
4.2 整数と浮動小数点数の演算                                                74
4.3 上位ビットと下位ビット                                                  80
4.4 ビット演算                                                                82
4.5 まとめ                                                                    88
第5 章WebAssembly の文字列89
5.1 ASCII とUnicode                                                         89
5.2 線形メモリ内の文字列                                                    90
5.3 まとめ                                                                    116
第6 章線形メモリ117
6.1 WebAssembly の線形メモリ                                              117
6.2 JavaScript のメモリオブジェクト                                        123
6.3 衝突検出                                                                  128
6.4 まとめ                                                                    141
第7 章Web アプリケーション143
7.1 DOM                                                                       144
7.2 シンプルなNode サーバーをセットアップする                          144
7.3 1 つ目のWebAssembly Web アプリケーション                          146
7.4 16 進数文字列と2 進数文字列                                            152
7.5 まとめ                                                                    161
第8 章キャンバスの操作163
8.1 キャンバスでのレンダリング                                              163
8.2 描画データを管理するWAT モジュール                                  170
8.3 まとめ                                                                    191
第9 章パフォーマンスの最適化193
9.1 プロファイラを使う                                                      193
9.2 wasm-opt                                                                 204
目 次vii
9.3 パフォーマンスを改善するための戦略                                    208
9.4 WebAssembly アプリケーションとJavaScript アプリケーションを比較
する                                                                    216
9.5 WAT を手動で最適化する                                                219
9.6 パフォーマンスを記録する                                                219
9.7 benchmark.js を使ったさらに高度なテスト                              224
9.8 ‒print-bytecode を使ってWebAssembly とJavaScript を比較する      231
9.9 まとめ                                                                    234
第10 章WebAssembly のデバッグ235
10.1 コンソールからデバッグする                                            235
10.2 アラートを使う                                                          245
10.3 スタックトレース                                                        245
10.4 Firefox のデバッガー                                                    251
10.5 Chrome のデバッガー                                                  256
10.6 まとめ                                                                    258
第11 章AssemblyScript 259
11.1 AssemblyScript のコマンドラインインターフェイス                    260
11.2 AssemblyScript でのhello world!                                       261
11.3 AssemblyScript でのOOP                                               270
11.4 まとめ                                                                    283
第12 章おわりに285
索 引                                                                          287